package edu.hcnu.proxy.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * @description: 简易实现aop的代理过程
 * @author: Administrator
 * @time: 2022/9/21 17:52
 */
public class MyInvocationHandler implements InvocationHandler {
    // 被代理的对象
    Object target;

    public MyInvocationHandler(Object target) {
        this.target = target;
    }


    //代理类的执行方法
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("日志" + Arrays.asList(args));
//        System.out.println("执行方法",method.getName());

        // 执行被代理的方法

        /*
         * Object target 被代理的对象
         * args 被代理的方法参数，直接将args 传进去
         * */
        Object result = method.invoke(target, args);

        System.out.println("result = " + result);

        return result;
    }
}
